Test Code
Test Codeを書く目的
#WIP
意図と可読性のあるtest codeを書く
testする対象を見極める
describe()を使わずにファイルを分割する
テストの分類とか
とはいえ、Testの分類が不明瞭なので、ここをギチギチにやる意味はあまりないと思っているmrsekut.icon
Testing Trophy
最近のfrontendでの分類
Unit Test
Integration Test
E2E test
Testing Honeycomb
最近のbackendでの分類
Test Sizes
名前が付いてるやつ
Regression Test
Table Driven Tests
Fuzz testing
実行結果の安定しないテスト
Erratic Test
http://xunitpatterns.com/Erratic%20Test.html
Flaky Test
開発手法とか
TDD
BDD
テストの仕方とか
テスト技法
異常系?
正常系?
全パターン網羅する?
対象ごとに
日付や時刻のテスト
QAをする
https://blog.shibayu36.org/entry/2014/03/24/231823
下の方は厳密に、上の方はゆるく
出来るだけ落ちやすいテストケース
落とす目的でも良さそう(?)
/mrsekut-book-4048930656/240 (第28章 テスト境界)
テストは円環の最も外側にある
testも自分より変更されにくいものに依存する
https://web.dev/learn/testing/welcome?hl=ja
web.dev
Small Scope Hypothesis
https://speakerdeck.com/hgsgtk/practices-to-write-better-unit-test
https://qiita.com/jnchito/items/2a5d3e15761fd413657a
テストコード、正常系から書くか、異常系から書くか
https://blog.sushi.money/entry/2020/10/23/090609
分散テスト実行
https://engineering.mercari.com/blog/entry/20211206-5aa2ac7efc/
Test Codeの量がめちゃくちゃ増えてくると実行時間の問題が出てくる
『オブジェクト指向設計実践ガイド』 9章
テストコードを書く意義、書くことで得られる恩恵
https://speakerdeck.com/nihonbuson/developers-summit-2020?slide=2
https://t-wada.hatenablog.jp/entry/design-for-testability
https://t-wada.hatenablog.jp/entry/design-for-testability
https://postd.cc/more-typing-less-testing-tdd-with-static-types-part-1/
https://tech.mercari.com/entry/2018/08/08/080000
https://dxd2021.cto-a.org/program/time-table/a-1
https://tech.smartcamp.co.jp/entry/how-to-walk-test-code
https://www.developsense.com/blog/2009/08/testing-vs-checking/
https://nemorine.hateblo.jp/entry/2021/12/23/235900
https://zenn.dev/takepepe/articles/frontend-testing-motivation
テスト全般の知識
テストの分類、テストコードの分類
テストコードの書き方
個別具体的なテストコードの書き方
言語、テストライブラリ、フレームワーク
テスト項目の作り方
手動テストの心構え
テスト管理ツール
https://qiita.com/kawasima/items/1fed574e7456edbad727
テスト工程
Unit Test
Integration Test
システムテスト
受け入れテスト
テスト種別
性能テスト
セキュリティテスト
機能テスト
ユーザビリティテスト
システムテスト
受け入れテスト
「テスト」と言っても、いろいろな分類ができる
テストレベルで区切る
単体、結合、..
手動 v.s. 自動で区切る
実機テスト、Test Code..
誰のためにテストするか
開発者、ユーザー、..
なぜテストをするか
仕様どおりに実装できているか ref
利用者に意図を伝える(test as documentation)
テストをメンテする人にとっても理解しやすくメンテしやすいものでないといけない
小さく、読みやすく、そのテストの意図も明確
テストがないと利用者はその対象の挙動を理解して利用するために以下のような手順を踏む必要が出てくる ref
コードを読んで動作を理解する
ドキュメントを読む
実際に動かして試してみる
作成者に聞く
誰のためのテスト?
開発者のため?
ex. TDD
顧客のため?
ex. ATDD
組合せ爆発するテスト要件を、どう表現するか
今やりたいのは実機テストのための表ではあるが、これはテストコードのときも似たような話になりそう
なので、エクセルみたいな2次元の表に、どうやって5次元の内容を書くか、みたいんところが気になっている
簡単な例では
ユーザーの種類
ゲスト
emailで登録したユーザー
phoneで登録したユーザー
両方で登録したユーザー
ユーザーの経路
Aができる
Bができる
Cができる
モバイルのOS(やVersion)
Android
iPhone
iPad
これだけで3*3パターンのテスト項目ができる
エクセルのような二次元の表に記述しづらい
OK/NGの結果などを残しづらい
表現するのもそうだが、実施するかどうかの話もある
選択肢が多すぎるものを全部行うのは非現実的
バグが起こりやすそうなところ、を精査して実施するなど
https://speakerdeck.com/cybozuinsideout/test-automation-b98fc9a4-3cca-4090-8550-0aaa636368e2
参考
テストはなぜ開発を遅くするか、テストを書かない理由はある!ない? - Qiita
テストの短所
リリースのたびに同じ箇所のテストを繰り返す必要がある
↓この辺をまとめる
/zatsuben/表に現れない開発箇所で説明しづらいところの言語化
バグ報告されてそれを改修するときに、そこに正しく型付けがされていたのかどうかを細かくチェックするといいmrsekut.icon
http://kevinmahoney.co.uk/articles/tests-vs-types/
自動テスト
https://speakerdeck.com/tsuemura/tesutowozi-dong-hua-surufalsewoyame-zi-dong-tesutowozuo-rou
https://qiita.com/advent-calendar/2019/softwaretesting
https://qiita.com/advent-calendar/2019/software-testing-koneta
アド彼
7原則
https://speakerdeck.com/nihonbuson/seven-testing-principles?slide=9
https://eh-career.com/engineerhub/entry/2019/10/03/103000
https://qiita.com/homunuz/items/fa39dec7d161bef9de0e
https://speakerdeck.com/tamaki/wiremockdexing-uuitesuto
https://github.com/NoriSte/ui-testing-best-practices
ベスプラ
https://speakerdeck.com/yattom/tesutofalsezi-dong-hua-totesutoqu-dong-kai-fa
https://miwa719.hatenablog.com/entry/daily20190624
https://speakerdeck.com/yosuke_furukawa/hurontoendotesutopurakuteisu-in-open-8
/miyamonz/テストについてちゃんと調べる
https://speakerdeck.com/negi_andleek/timudequ-rizu-mitesutogai-shan-falseayumi